package com.example.uit_management;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONObject;

import android.util.Log;
/** Theo tác trên sever RegCourse(Đăng kí sinh viên)	 */
public class JsonParser_pattern_IDStudent {	
	// Biến Mã sinh viên cần lấy
		private String Id_Student=MainActivity.Student_ID;
		//////////////////////////////////////////
		// Cac Bien trong Json tra ve
		////////////////////////////////////////
		/**key  name chuong trinh khung*/
		static final String  KEY_name = "name";	
		/**key  Ma mon hoc chuong trinh khung*/
		static final String  KEY_subjectID = "subjectID";			
		/**key  Ma chuong trinh khung*/
		static final String  KEY_patternID = "patternID";			
		/**key  ma lop trinh khung*/
		static final String  KEY_classID = "classID";	
		/**key  so tinh chi cua mon trinh khung*/
		static final String  KEY_subjectCredit = "subjectCredit";
		/**key  Ten mon hoc*/
		static final String  KEY_subjectName = "subjectName";
		/**key  loai mon cua trinh khung VD:Môn Học Tự Chọn*/
		static final String  KEY_facultyID = "facultyID";
		/**key  so tinh chi ly thuyet cua chuong trinh khung VD:Môn Học Tự Chọn*/
		static final String  KEY_subjectTheory = "subjectTheory";		
		/**key  loai mon hoc*/
		static final String  KEY_subjectType = "subjectType";
		/**key  so tinh chi thuc hanh mon hoc*/
		static final String  KEY_subjectPractice = "subjectPractice";
		/**key  hoc ki can hoc mon nay*/
		static final String  KEY_patternSemester = "patternSemester" ;		
		/**key  Loai mon hoc hanh mon hoc*/
		static final String  KEY_subjectRequired = "subjectRequired";	
		
		//////////////////////////////////////////////////////////
		//Các biến lưu chuổi lấy về cho các Từ khóa trên
		//////////////////////////////////////////////////////////
		/**static  name chuong trinh khung*/
		static String  name = "name";	
		/**static  Ma mon hoc chuong trinh khung*/
		static String subjectID = "subjectID";			
		/**static  Ma chuong trinh khung*/
		static String  patternID = "patternID";			
		/**static  ma lop trinh khung*/
		static String  classID = "classID";	
		/**static  so tinh chi cua mon trinh khung*/
		static String  subjectCredit = "subjectCredit";
		/**static ten mon hoc*/
		static String  subjectName = "subjectName";
		/**static  loai mon cua trinh khung VD:Môn Học Tự Chọn*/
		static String  facultyID = "facultyID";
		/**static  so tinh chi ly thuyet cua chuong trinh khung VD:Môn Học Tự Chọn*/
		static String  subjectTheory = "subjectTheory";		
		/**static  loai mon hoc*/
		static String  subjectType = "subjectType";
		/**static  so tinh chi thuc hanh mon hoc*/
		static String  subjectPractice = "subjectPractice";
		/**static  Loai mon hoc hanh mon hoc*/
		static String  subjectRequired = "subjectRequired";
		/**static key  hoc ki can hoc mon nay*/
		static String  patternSemester = "patternSemester" ;		
	/** Hàm khởi tạo một JsonParse_regCourse */
	public JsonParser_pattern_IDStudent() {
		// TODO Auto-generated constructor stub
	}
	/** Dữ liệu trả về là Array Json ta cần(Lấy theo mã sinh viên)*/
	public JSONArray GetJSONArray_regCourse(){		
		String readTwitterFeed = readTwitterFeed();					
			try
	        {
				// Lấy Json từ sever cung cấp(là Data) Sau đó lấy mảng Array từ Data đó
				JSONObject json = new JSONObject(readTwitterFeed);
				JSONArray jsonArray = json.getJSONArray("data");	
				return jsonArray;
	        }
	        catch (Exception je)
	        {	   
	            Log.e(JsonParser_pattern_IDStudent.class.toString(), "Method GetJSONArray_regCourse of JsonParser_pattern");
	        	return null;
	        }	  				
	}
	/** Hàm lấy về Json do Sever cung cấp(o đây là Json là Data)*/
	public String readTwitterFeed() {
		// Các biến cần thiết cho việc lấy JSon từ sever về
	    StringBuilder builder = new StringBuilder();
	    HttpClient client = new DefaultHttpClient();
	    //HttpGet httpGet = new HttpGet("http://uitstudentmanagement.appspot.com/regCourse");
	    HttpGet httpGet =new HttpGet("http://uitstudentmanagement.appspot.com/pattern?type=bystudent&studentid="+MainActivity.Student_ID);
	    
	    // Lấy dữ liệu về
	    try {
	        HttpResponse response = client.execute(httpGet);
	        StatusLine statusLine = response.getStatusLine();
	        int statusCode = statusLine.getStatusCode();
	        if (statusCode == 200) {
	            HttpEntity entity = response.getEntity();
	            InputStream content = entity.getContent();
	            BufferedReader reader = new BufferedReader(new InputStreamReader(content));
	            String line;
	            while ((line = reader.readLine()) != null) {
	                builder.append(line);
	            }
	        } else {
	            Log.e(JsonParser_regCourse.class.toString(), "Method readTwtterFeed of JsonParser_regCourse statusCode != 200");
	        }
	    } catch (ClientProtocolException e) {
	        e.printStackTrace();
	    } catch (IOException e) {
	        e.printStackTrace();
	    }
	    // Dữ liệu được trả về
	    return builder.toString();
	}	
	/**
	 *Hàm trả về Array list HashMap từ sever pattern(Các môn SV đã đăng kí)
	 */
	public ArrayList<HashMap<String, String>> getMap()
	{
		// Biến Array list hashMap
		ArrayList<HashMap<String, String>> ArrayMap = new ArrayList<HashMap<String, String>>();
		JSONArray jsonArray = GetJSONArray_regCourse();
		// looping through all jsonarray nodes 
		Log.e(JsonParser_pattern_IDStudent.class.toString(), "Tatol member :"+jsonArray.length());
		for (int i = 0; i < jsonArray.length(); i++) {
			try {
				//create new JsonObject	
				JSONObject js = jsonArray.getJSONObject(i);
				// creating new HashMap
				HashMap<String, String> map = new HashMap<String, String>();			
				// adding each child node to HashMap key => value	
				name		=js.getString("name");
				subjectID	=js.getString("subjectID");
				patternID	=js.getString("patternID");
				classID		=js.getString("classID");
				subjectCredit	=js.getString("subjectCredit");
				subjectName		=js.getString("subjectName");
				facultyID	=js.getString("facultyID");
				subjectTheory	=js.getString("subjectTheory");
				subjectType		=js.getString("subjectType");
				subjectPractice	=js.getString("subjectPractice");
				subjectRequired	=js.getString("subjectRequired");
				patternSemester	=js.getString("patternSemester");
				
				map.put(KEY_name, name);	
				map.put(KEY_subjectID, subjectID);
				map.put(KEY_patternID, patternID);
				map.put(KEY_classID, classID);
				map.put(KEY_subjectCredit, subjectCredit);
				map.put(KEY_subjectName, subjectName);
				map.put(KEY_facultyID, facultyID);
				map.put(KEY_subjectTheory, subjectTheory);
				map.put(KEY_subjectType, subjectType);
				map.put(KEY_subjectPractice, subjectPractice);
				map.put(KEY_subjectRequired, subjectRequired);
				map.put(KEY_patternSemester, patternSemester);					
				
				ArrayMap.add(map);					
			} catch (Exception e) {
				e.printStackTrace();
				// TODO: handle exception
				//Log.e(JsonParser_regCourse.class.toString(), "Exception Method GetMapKey");
			}
			
		}		
		return ArrayMap;
	}	
}
